home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / kudzu / device.h < prev    next >
C/C++ Source or Header  |  2005-12-04  |  3KB  |  112 lines

  1. /* Copyright 1999-2004 Red Hat, Inc.
  2.  *
  3.  * This software may be freely redistributed under the terms of the GNU
  4.  * public license.
  5.  *
  6.  * You should have received a copy of the GNU General Public License
  7.  * along with this program; if not, write to the Free Software
  8.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  9.  *
  10.  */
  11.  
  12.  
  13. #ifndef _KUDZU_DEVICES_H_
  14. #define _KUDZU_DEVICES_H_
  15.  
  16. #include <stdio.h>
  17.  
  18. enum deviceClass {
  19.     /* device classes... this is somewhat ad-hoc */
  20.     CLASS_UNSPEC = ~0,
  21.     CLASS_OTHER = (1 << 0),
  22.     CLASS_NETWORK = (1 << 1),
  23.     CLASS_SCSI = (1 << 2),
  24.     CLASS_MOUSE = (1 << 3),
  25.     CLASS_AUDIO = (1 << 4),
  26.     CLASS_CDROM = (1 << 5),
  27.     CLASS_MODEM = (1 << 6),
  28.     CLASS_VIDEO = (1 << 7),
  29.     CLASS_TAPE = (1 << 8),
  30.     CLASS_FLOPPY = (1 << 9),
  31.     CLASS_SCANNER = (1 << 10),
  32.     CLASS_HD = (1 << 11),
  33.     CLASS_RAID = (1 << 12),
  34.     CLASS_PRINTER = (1 << 13),
  35.     CLASS_CAPTURE = (1 << 14),
  36.     CLASS_KEYBOARD = (1 << 15),
  37.     CLASS_MONITOR = (1 << 16),
  38.     CLASS_USB = (1 << 17),
  39.     CLASS_SOCKET = (1 << 18),
  40.     CLASS_FIREWIRE = (1 << 19),
  41.     CLASS_IDE = (1 << 20)
  42. };
  43.  
  44. /* Update this if needed */
  45. #define CLASS_LAST CLASS_IDE
  46.  
  47. enum deviceBus {
  48.     /* 'bus' that a device is attached to... this is also ad-hoc */
  49.     /* BUS_SBUS is sort of a misnomer - it's more or less Sun */
  50.     /* OpenPROM probing of all various associated non-PCI buses */
  51.     BUS_UNSPEC = ~0,
  52.     BUS_OTHER = (1 << 0),
  53.     BUS_PCI = (1 << 1),
  54.     BUS_SBUS = (1 << 2),
  55.     BUS_SERIAL = (1 << 3),
  56.     BUS_PSAUX = (1 << 4),
  57.     BUS_PARALLEL = (1 << 5),
  58.     BUS_SCSI = (1 << 6),
  59.     BUS_IDE = (1 << 7),
  60.     /* Again, misnomer */
  61.     BUS_KEYBOARD = (1 << 8),
  62.     BUS_DDC = (1 << 9),
  63.     BUS_USB = (1 << 10),
  64.     BUS_ISAPNP = (1 << 11),
  65.     BUS_MISC = (1 << 12),
  66.     BUS_FIREWIRE = (1 << 13),
  67.     BUS_PCMCIA = (1 << 14),
  68.     BUS_ADB = (1 << 15),
  69.     BUS_MACIO = (1 << 16),
  70.     BUS_VIO = (1 << 17),
  71.     BUS_S390 = (1 << 18)
  72. };
  73.  
  74. struct device {
  75.     /* This pointer is used to make lists by the library. */
  76.     /* Do not expect it to remain constant (or useful) across library calls. */
  77.     struct device *next;
  78.     /* Used for ordering, and for aliasing (modem0, modem1, etc.) */
  79.     int index;
  80.     enum deviceClass type;    /* type */
  81.     enum deviceBus bus;        /* bus it's attached to */
  82.     char * device;        /* device file associated with it */
  83.     char * driver;        /* driver to load, if any */
  84.     char * desc;        /* a description */
  85.     int detached;        /* should we care if it disappears? */
  86.     void * classprivate;    /* data specific to a particular class */
  87.     struct device *(*newDevice) (struct device *old, struct device *new);
  88.     void (*freeDevice) (struct device *dev);
  89.     void (*writeDevice) (FILE *file, struct device *dev);
  90.     int (*compareDevice) (struct device *dev1, struct device *dev2);
  91. };
  92.  
  93. struct device *newDevice(struct device *old, struct device *new);
  94. void freeDevice(struct device *dev);
  95. void writeDevice(FILE *file, struct device *dev);
  96. int compareDevice(struct device *dev1, struct device *dev2);
  97. struct device *readDevice(FILE *file);
  98. char *bufFromFd(int fd);
  99.  
  100. /* Return everything found, even non-useful stuff */
  101. #define PROBE_ALL       1
  102. /* Don't do 'dangerous' probes that could do weird things (serial) */
  103. #define PROBE_SAFE (1<<1)
  104. /* Stop at first device found */
  105. #define PROBE_ONE       (1<<2)
  106.  
  107. /* Return devices for which modules are currently loaded */
  108. /* Only implemented for network cards currently */
  109. #define PROBE_LOADED (1 << 31)
  110.  
  111. #endif
  112.